import { Message, Notification, MessageBox } from 'element-ui'
import * as functions from '@/core/functions.js'

// 返回状态判断(添加响应拦截器)
var isRelogin = true
// 是否能够请求
var httpUser = true
export default {
  httpUser: httpUser,
  response: function (response) {
    // 对响应数据做些事
    if (!response.data) {
      return null
    }
    const data = response.data

    if (!data) {
      return null
    }

    // 错误状态码不等于200的操作
    if (data.code && parseInt(data.code) !== 200) {
      // 请求出现错误
      console.warn(data)
      // 如果大于等于 600 则清除 session 然后返回至登录页面
      if (parseInt(data.code) >= 600 && isRelogin) {
        isRelogin = false
        this.httpUser = false
        let message = ''
        if (data.message && typeof data.message.message === 'string' && data.message.message.length > 0) {
          message = data.message.message
        } else {
          message = '登录超时！'
        }
        MessageBox({
          title: '提示',
          message: message,
          confirmButtonText: '关闭',
          type: 'warning'
        })
          .then(() => {
            functions.gotoLoginUrl()
          })
          .catch(() => {
            functions.gotoLoginUrl()
          })
        return
      }
    }

    /**
     * 接收的内容对应的提示消息
     */
    // 消息提示
    if (data.console) {
      for (let key in data.console) {
        switch (key) {
          case 'error':
            console.error(data.console[key])
            break
          case 'info':
            console.info(data.console[key])
            break
          case 'clear':
            console.clear(data.console[key])
            break
          case 'log':
            console.log(data.console[key])
            break
          case 'warn':
            console.warn(data.console[key])
            break
          default:
            console.log(data.console)
            break
        }
      }
    }
    // 消息提示
    if (data.message) {
      Message(data.message)
    }
    // 消息弹框
    if (data.messageBox) {
      MessageBox(data.messageBox).catch(() => { })
    }
    // 通知提示
    if (data.notification) {
      Notification(data.notification)
    }

    return data && typeof data.data !== 'undefined' ? data.data : null
  },
  error: function (error) {
    // 返回 response 里的错误信息
    console.error(error)
    Message.error('请求服务器失败！')
  }
}
